<?php
/*
 * 时间类
 * @author andery <andery@foxmail.com>
 * @link http://www.minophp.com/
 * @version $Id: CDateTime.lib.php 2010-07-08 23:12:10Z andery $
 */
class CDateTime
{
    /**
     * 获取所有时区列表
     * 为了支持多语言，需要对该函数进行改进
     * @return array
     */
    public static function timezone_list()
    {
        CLang::load('lib.DateTime');
        return array(
            '-12'=>'('.CLang::get('SGMT').'-12) '.CLang::get('GMT_N_12'),
            '-11'=>'('.CLang::get('SGMT').'-11) '.CLang::get('GMT_N_11'),
            '-10'=>'('.CLang::get('SGMT').'-10) '.CLang::get('GMT_N_10'),
            '-9' =>'('.CLang::get('SGMT').'-9) '  .CLang::get('GMT_N_9'),
            '-8' =>'('.CLang::get('SGMT').'-8) '  .CLang::get('GMT_N_8'),
            '-7' =>'('.CLang::get('SGMT').'-7) '  .CLang::get('GMT_N_7'),
            '-6' =>'('.CLang::get('SGMT').'-6) '  .CLang::get('GMT_N_6'),
            '-5' =>'('.CLang::get('SGMT').'-5) '  .CLang::get('GMT_N_5'),
            '-4' =>'('.CLang::get('SGMT').'-4) '  .CLang::get('GMT_N_4'),
            '-3' =>'('.CLang::get('SGMT').'-3) '  .CLang::get('GMT_N_3'),
            '-2' =>'('.CLang::get('SGMT').'-2) '  .CLang::get('GMT_N_2'),
            '-1' =>'('.CLang::get('SGMT').'-1) '  .CLang::get('GMT_N_1'),
            '0'  =>'('.CLang::get('GMT').') '     .CLang::get('GMT_0'),
            '1'  =>'('.CLang::get('SGMT').'+1) '  .CLang::get('GMT_P_1'),
            '2'  =>'('.CLang::get('SGMT').'+2) '  .CLang::get('GMT_P_2'),
            '3'  =>'('.CLang::get('SGMT').'+3) '  .CLang::get('GMT_P_3'),
            '4'  =>'('.CLang::get('SGMT').'+4) '  .CLang::get('GMT_P_4'),
            '5'  =>'('.CLang::get('SGMT').'+5) '  .CLang::get('GMT_P_5'),
            '6'  =>'('.CLang::get('SGMT').'+6) '  .CLang::get('GMT_P_6'),
            '7'  =>'('.CLang::get('SGMT').'+7) '  .CLang::get('GMT_P_7'),
            '8'  =>'('.CLang::get('SGMT').'+8) '  .CLang::get('GMT_P_8'),
            '9'  =>'('.CLang::get('SGMT').'+9) '  .CLang::get('GMT_P_9'),
            '10' =>'('.CLang::get('SGMT').'+10) '.CLang::get('GMT_P_10'),
            '11' =>'('.CLang::get('SGMT').'+11) '.CLang::get('GMT_P_11'),
            '12' =>'('.CLang::get('SGMT').'+12) '.CLang::get('GMT_P_12'),
        );
    }
    
    /**
     * 设定时区
     * @param string $timezone
     */
    public static function get_timezone()
    {
        return date_default_timezone_get();
    }
    
    /**
     * 设定时区
     * @param string $timezone
     */
    public static function set_timezone($timezone)
    {
        if ($timezone>0) {
            $timezone = 'Etc/GMT-'.$timezone;
        } else {
            $timezone = 'Etc/GMT+'.abs($timezone);
        }
        if(self::get_timezone() != $timezone) {
            date_default_timezone_set($timezone);
        }
    }
    
    /**
     * Unix 时间戳 微秒数
     */
    public static function get_microtime(){
        return array_sum(explode(' ', microtime()));
    }
    
    /**     * 年-月-日转化为时间 
     */
    public static function dmktime($date) {
        if (strpos($date, '-')) {
            $time = explode('-', $date);
            return mktime(0, 0, 0, $time[1], $time[2], $time[0]);
        }
        return 0;
    }
}